package cn.qicaiwang.open.qiniu.controller;

import cn.qicaiwang.open.common.response.ResponseResult;
import cn.qicaiwang.open.qiniu.utils.QiNiuUtil;
import com.qiniu.storage.model.FileInfo;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.UnsupportedEncodingException;
import java.util.Map;

@RestController
@RequestMapping("/qcwapp/fileController")
public class FileController {


    /**
     * 上传文件
     *
     * @param multipartFile 上传的文件
     * @return 上传后的文件key
     */
    @PostMapping("/upload")
    public ResponseResult upload(@RequestParam("file") MultipartFile multipartFile) {
        String res = QiNiuUtil.uploadMultipartFile(multipartFile, null);
        return ResponseResult.ok(res);
    }

    /**
     * 获取所有的Bucket
     *
     * @return Bucket名称数组
     */
    @GetMapping("/getBuckets")
    public String[] getBuckets() {
        return QiNiuUtil.getBucketsInfo();
    }

    /**
     * 获取文件访问地址
     *
     * @param fileName 文件云端存储的名称
     * @return 文件访问地址
     */
    @GetMapping("/fileUrl")
    public String getFileUrl(@RequestParam("fileName") String fileName) throws UnsupportedEncodingException {
        return QiNiuUtil.fileUrl(fileName);
    }

    /**
     * 获取Bucket中所有文件的信息
     *
     * @return 文件信息数组
     */
    @GetMapping("/getFileInfo")
    public FileInfo[] getFileInfo() {
        return QiNiuUtil.getFileInfo();
    }

    /**
     * 删除单个文件
     *
     * @param key 文件名称
     * @return 是否删除成功
     */
    @DeleteMapping("/delete")
    public boolean deleteFile(@RequestParam("key") String key) {
        return QiNiuUtil.delete(key);
    }

    /**
     * 批量删除文件
     *
     * @param keys 文件名称数组
     * @return 删除结果（文件名 -> 删除状态）
     */
    @DeleteMapping("/batchDelete")
    public Map<String, String> batchDeleteFiles(@RequestParam("keys") String[] keys) {
        return QiNiuUtil.deletes(keys);
    }
}

